
import matplotlib.pyplot as plt
from matplotlib.patches import FancyBboxPatch

# 生成目录样式示意图
fig, ax = plt.subplots(1, 1, figsize=(8, 10))
fig.suptitle('论文目录结构示意图', fontproperties='SimHei', fontsize=16)

# 设置目录内容
contents = [
    ("摘要", "I"),
    ("关键词", "II"),
    ("第一章 绪论", "1"),
    ("1.1 研究背景与意义", "1"),
    ("1.1.1 智能规划技术的发展与挑战", "1"),
    ("1.1.2 深度强化学习的优势及其在规划领域的潜力", "1"),
    ("1.1.3 研究的重要理论与应用价值", "1"),
    ("1.2 国内外研究现状", "1"),
    ("1.2.1 经典智能规划算法综述", "1"),
    ("1.2.2 深度强化学习算法研究进展", "1"),
    ("1.2.3 深度强化学习在智能规划中的应用综述", "1"),
    ("1.3 现有研究存在的问题与不足", "2"),
    ("1.4 本文主要研究内容与创新点", "2"),
    ("1.5 论文组织结构", "2"),
    ("第二章 相关理论基础", "3"),
    ("2.1 智能规划基本理论", "3"),
    ("2.1.1 规划问题的定义与描述（如STRIPS、PDDL）", "3"),
    ("2.1.2 经典规划算法（如启发式搜索、规划图）", "3"),
    ("2.2 深度强化学习基本理论", "3"),
    ("2.2.1 强化学习基本概念（MDP，POMDP）", "3"),
    ("2.2.2 主流深度强化学习算法（如DQN, A3C, PPO）", "3"),
    ("2.2.3 价值函数与策略梯度方法", "3"),
]

# 绘制目录
y_pos = 0.95
for i, (text, page) in enumerate(contents):
    # 不同级别使用不同的缩进
    if text.startswith("第") or text in ["摘要", "关键词"]:
        indent = 0
        fontsize = 12
        weight = 'bold'
    elif text.startswith(("1.", "2.")) and not any(c in text for c in ["1.1", "1.2", "2.1", "2.2"]):
        indent = 0.05
        fontsize = 11
        weight = 'semibold'
    else:
        indent = 0.1
        fontsize = 10
        weight = 'normal'

    # 绘制标题
    ax.text(0.05 + indent, y_pos, text, fontproperties='SimHei',
            fontsize=fontsize, weight=weight, transform=ax.transAxes)

    # 绘制引导点
    dot_start = 0.05 + indent + len(text) * 0.01
    dot_end = 0.9
    dot_y = y_pos - 0.005

    # 绘制页码
    ax.text(0.92, y_pos, page, fontproperties='SimHei',
            fontsize=fontsize, weight=weight, transform=ax.transAxes)

    y_pos -= 0.05

ax.set_xlim(0, 1)
ax.set_ylim(0, 1)
ax.axis('off')
plt.tight_layout()
plt.show()
